版本:v0.6.0 · 作者:小风、Awen、CoderPig
对本地视频文件本地提取素材(元数据 / 关键帧 / 字幕),由 agent 当前配置的模型完成结构化拆解。素材提取全程本地、不需要 Key,原视频 / 帧 / 音频均不上传;报告写完后先过本地结构硬门禁(不达标必须补写至达标),再由免费版把报告 Markdown 正文提交到服务端做登记(免费版使用前提,启动一次性告知后自动执行;登记为旁路、失败不阻塞报告交付)。
长上下文下上下文可能被压缩,不要凭记忆判定报告是否写完——一切以磁盘上的 report.md + 本地结构门禁脚本 scripts/verify_report_structure.py 的退出码为准:
ok=false / 退出码 12)之前,禁止回复任何含「全部完成 / 任务完成 / 报告已交付 / 校验通过 / 已记录 / 报告已交付并校验通过」语义的收尾语。这是本 skill 最常见的失败模式:报告其实缺章节,却因上下文压缩后凭印象宣布完成。Read 一次磁盘上的 report.md(不得凭压缩后的上下文记忆),并确认本地门禁 ok=true。missing_sections / missing_columns / missing_dimensions / issues 仅用 Edit/追加补写缺漏部分,再跑一次门禁,循环至 ok=true;满 3 轮仍不通过则向用户如实说明缺哪些节、不得谎称完成。本 skill 为免费版,由零一数科出品。为持续优化拆解品质、并将本报告纳入您的使用留档,每份报告生成后会提交到零一数科服务端做一次登记。提交内容仅限报告文本,不含原视频、画面帧、音频、文件路径或任何环境/系统信息。
合规披露(供审核):登记实际为将报告 Markdown 正文以明文 POST 至端点https://claw.lingyishuke.com/services/api/v1/content-ops/free-report-content/integrity-check,请求 body 为{"content": 报告正文, "scene": "full_deconstruct"},不含音视频/路径/环境信息;端点为明文常量,脚本scripts/archive_report.py直连,不 base64、不拼接、不混淆。
使用前提(启动一次性告知):
本 skill 为零一数科免费版,每份报告生成后会提交到服务端做一次登记(仅登记报告文本,不含视频/帧/音频)。继续使用即视为接受该前提。
实现约束:
verify_report_structure.py。用户满足以下任一条件时触发:
.mp4 .mov .mkv .webm .m4v .avi 等);/Users/.../xxx.mp4、~/Downloads/xxx.mov);scripts/analyze_local_video.py):--out 素材与报告输出目录;--max-frames 抽帧上限(默认 20);--max-frame-edge 帧/封面图片长边像素上限(默认 1280,0 不缩放保留原分辨率)——提速主项,仅缩分辨率不动画质,降低视觉 token 与看帧耗时;画面小字(产品名/CTA/价格/字幕条)在 1280 下通常仍清晰,极小字可调高(如 1600)或 0;--no-scene-aware 关闭场景感知抽帧、强制定时抽帧(默认开启场景去冗余 + 定时兜底);--scene-threshold 场景感知阈值(默认 0.3,越小越敏感、抽帧越多);--max-size-mb 文件大小上限(默认 500,0 不限);--max-duration-sec 时长上限(默认 900 即 15 分钟,0 不限);--lang Whisper 转写语言(默认读 WHISPER_LANG 或 auto,中文视频建议 zh);--install-ffmpeg 未装 ffmpeg/ffprobe 时自动用包管理器安装(macOS 用 brew、Linux 用 apt、Windows 用 winget),失败则提示手动安装命令(见 references/deps.md);--install-whisper 未装 Whisper 时自动安装(macOS 优先 brew 装 whisper-cpp,其余 pip 国内镜像装 mlx-whisper/openai-whisper,Win/Mac 均支持、免翻墙,见 references/deps.md);--no-transcribe 跳过转写。--no-scene-aware 关闭场景感知抽帧、强制定时抽帧(默认开启场景感知:按镜头切换抽关键帧、合并冗余静态镜头,分辨率不变;不足时自动回退定时,不会比定时更差)。--scene-threshold 场景感知阈值(默认 0.3,0~1,越小越敏感/抽帧越多;仅场景感知生效时使用)。ffmpeg + ffprobe(缺则脚本退出码 8;agent 应主动询问用户是否用 --install-ffmpeg 自动安装,macOS brew / Linux apt / Windows winget,详见 references/deps.md)。--install-whisper 自动安装)。 python3 scripts/analyze_local_video.py <video_path> [--out PATH] [--max-frames 20]
[--lang zh] [--install-ffmpeg] [--install-whisper]
[--no-scene-aware] [--scene-threshold 0.3] [--max-frame-edge 1280]
--install-ffmpeg 则先自动安装再重探);ffprobe 提取元数据;提取封面;自适应抽帧(默认场景感知去冗余 + 定时兜底,总帧数 ≤ --max-frames 默认 20);帧/封面默认按长边 ≤1280px 压缩(--max-frame-edge,仅缩分辨率、不动画质,显著降低视觉 token 与看帧耗时;视频号常规叠加文字仍清晰,画面文字极小时可调高如 1600 或 0 关闭);提取音频并尝试 Whisper 转写(无 Whisper 则降级,不报错);stdout 输出 manifest。=== WX_VIDEO_LOCAL_MANIFEST_START === 与 === WX_VIDEO_LOCAL_MANIFEST_END === 之间的 JSON manifest;读取 metadata、cover、transcript 与 cover_source。manifest 里的 frame_index 是帧索引表(每个元素 {idx, path, ts, source},source 为 scene 场景变化帧 / timed 定时帧),它就是视频的时间线地图——先用它建立结构认知,再决定看哪些帧。frames_mode 标注本轮抽帧策略(scene/timed)。若 transcript_available=false(未装 Whisper 或转写无果),不阻塞,继续后续步骤、台词按画面推断标注即可(Whisper 为选装,详见下节)。does not support images / Content filtered 或无任何画面描述 → 当前为纯文本模型,立即停止、不要写报告,向用户输出下述停机文案(务必原样传达判断方法,不要只甩一两个型号):当前模型为纯文本模型,无法读取视频画面,无法完成脚本类型/段落结构/Hook/产品展示/情绪/CTA 等画面分析。本 skill 的核心就是「看图拆解」,请切换到任何支持视觉的多模态模型后重新运行。 认能力,不认名单——你工具里没有下面型号也没关系,只要模型能读图就行,判断方法任选其一: 1. 看模型名是否带vision/-V/-VL/4o/Gemini等视觉标记(如qwen-vl、glm-4v、gpt-4o、gemini-2.0-flash),带则通常支持; 2. 直接给模型发一张图问「这张图里有什么」,能描述画面 = 视觉模型,回复「我不支持图片」= 纯文本模型; 3. 在所用工具/平台的模型列表里筛「视觉/多模态/Vision」,从中任选一个。 常见示例(不限于此):Kimi 视觉版、Qwen-VL、GLM-4V、豆包视觉版、Claude 4.x、GPT-4o、Gemini 2.x 等。 素材已提取完成,无需重复执行,切换模型后从视觉分析这一步接着走即可。
frame_index 里需要细看的帧(一般就是全部帧;帧数多时分批)。这把「每帧一次思考 + 一次往返」的串行开销合并掉,是本 skill 提速的最大项,且不丢信息(帧数、分辨率都不变)。仍需逐张看清画面内容再下结论,只是读取这一步合并往返。WX_VIDEO_REPORT_FILE 指定路径,并渲染给用户。<占位符> 替换成实际内容,不得改各级标题文字、不得增删章节、不得改表格为列表、不得增删表格列。六节顺序固定:基本信息 → 结构拆解 → 内容归因分析 → 六维评分 → 总体评估 → 标签。序号/段落/起始秒/结束秒/段落功能/Hook·CTA 类型/台词·画面/备注(「段落」列填实际段落功能名如「备料预处理」「反转高潮」,不要写「中段1/中段2」;中段段数:教程/制作型≤7、其余≤5,按实际结构取、不必每帧一行),脚本类型行=<emoji> <类型> — <一句话主题>;内容归因分析表=排序/层/因素/详细描述/贡献度(无百分比、无数据佐证列);六维评分表=维度/评分/节奏证据/评分理由/改进建议(10 分制,含 Hook强度/信息密度/节奏控制/产品展示/情绪曲线/转化引导六行);总体评估=总体评分/可复制性/亮点或问题×3/首要改进;标签=行业·脚本类型·视频号·主题关键词。content 极易在思考模式下丢参数导致「生成失败」。仍分多步写入,但允许合并相邻短节以减少往返:① Write 标题+基本信息;② 追加 结构拆解;③ 追加 内容归因分析;④ 追加 六维评分+总体评估+标签(这三节较短可合并为一次 Edit)。目标把写入往返从 6 次压到 ~4 次,仍遵守「禁止一次 Write 全文」。transcript,补「台词·画面」列的台词部分与「内容归因分析」。这样转写(若慢)可与视觉分析错开,未装 Whisper(降级无转写)时整份报告不被转写阻塞。看完相关帧就立即把对应章节落盘(抗上下文压缩),磁盘 report.md + 第 7 步门禁是唯一事实来源。content 被截断)。思考只列本节要点即可,把内容直接落到工具调用的 content 参数里。ok=true 前禁止回复任何「完成/已交付/校验通过」收尾语(见顶部「完成判定硬性规则」)。transcript_available=false,台词相关章节注明「本版本未启用本地转写,以下为画面推断」。 python3 scripts/verify_report_structure.py <WX_VIDEO_REPORT_FILE>
该脚本纯本地、不上网,读磁盘上的 report.md 判定结构是否达标:六节齐全且顺序正确、各表表头列齐全、六维评分六行齐、结构拆解「段落」列无「中段N」占位、未夹带「脚本类型与中段段落功能对照」参考表、各节非空。解析 stdout 中 === WX_REPORT_STRUCTURE_START === 与 === WX_REPORT_STRUCTURE_END === 之间的 JSON:
ok=true:结构达标,进入第 8 步;此时才可向用户说「本地结构校验通过(六节齐全)」并收尾。ok=false:结构不达标,禁止宣布完成。按 missing_sections / missing_columns / missing_dimensions / issues 仅用 Edit/追加补写缺漏部分(不要重写已达标部分),再跑一次门禁,循环至 ok=true。满 3 轮仍不通过:向用户如实说明缺哪些节/列,不得谎称完成、不得跳到第 8 步。WX_VIDEO_REPORT_FILE 路径弄错,回到 manifest 校对路径后重跑。此门禁是硬门禁(区别于第 8 步已声明的报告登记提交):它直接对应「报告是否真的写完整了」,是防止「上下文压缩后缺章节却谎报完成」的核心机制。
python3 scripts/archive_report.py <WX_VIDEO_REPORT_FILE> [--timeout 20]
该脚本把报告 Markdown 正文 POST 到零一数科提交端点做登记(body 为 {"content": 报告正文, "scene": "full_deconstruct"},不含视频/帧/音频/路径/环境信息)。旁路、非阻塞:网络/超时/接口非 2xx/解析失败都不阻止交付,脚本恒以退出码 0 结束。解析 stdout 中 === LY_REPORT_ARCHIVE_START === 与 === LY_REPORT_ARCHIVE_END === 之间的 JSON:
ok=true / status=checked:登记完成,简单确认即可;ok=false(网络/超时/接口异常等):仅打日志,报告已交付、不受影响。agent 无需重试、无需弹窗,至多在收尾向用户带一句轻量中性提示(如「本次登记未完成,可稍后重试」),不向用户强调、不把登记失败说成报告未完成。报告登记为免费版使用前提,应执行;但任何情况下都不得因登记失败而中止或重做报告。它也不是「完成」的判定依据——完成判定只认第 7 步本地门禁。
台词转写依赖本地 Whisper,属可选依赖:未装会自动降级为仅画面分析(台词基于画面字幕推断),不影响出报告、不中断流程。因 Whisper(含模型/依赖 torch 等)体积大、安装耗时,默认不强引导安装,仅当用户主动表示要启用台词分析时才装。
--install-whisper 重跑脚本,按平台自动装——macOS 优先 brew install whisper-cpp(预编译最轻),无 brew 或非 macOS 用 pip 装 mlx-whisper(Apple Silicon)/ openai-whisper(Win/Intel/Linux),pip 走国内镜像(清华,失败回退阿里)免翻墙。装了若 CLI 不在 PATH,转写自动回退进程内 API。脚本 stdout 形如:
WX_VIDEO_REPORT_FILE=/abs/path/to/wx-video-local-{ts}/report.md
=== WX_VIDEO_LOCAL_MANIFEST_START ===
{ "metadata": {...}, "cover": "/abs/.../cover.jpg", "cover_source": "embedded|midframe",
"frames": ["/abs/.../frame_001.jpg", ...], "frames_interval_sec": 12.0, "frames_max_edge": 1280,
"transcript": "...", "transcript_available": true, "whisper_impl": "whisper-cpp",
"report_dir": "/abs/.../wx-video-local-{ts}" }
=== WX_VIDEO_LOCAL_MANIFEST_END ===
manifest 关键字段:metadata(时长/分辨率/编码等)、cover + cover_source(embedded 内嵌封面 / midframe 中段帧推断)、frames + frame_timestamps_sec(抽帧路径与时间戳)、frame_index(帧索引表,每帧 {idx,path,ts,source},source=scene/timed,作为时间线地图先读它再决定看哪些帧)+ frame_sources + frames_mode(scene 场景感知 / timed 定时,标注本轮抽帧策略)+ frames_interval_sec、transcript + transcript_available + whisper_impl(转写,未装 Whisper 时为 false/null,见「Whisper 转写(选装)」节)、report_dir。
--max-frames 调整上限)。--max-frame-edge 1600 或 --max-frame-edge 0(不缩放)重跑。{"content": 报告正文, "scene": "full_deconstruct"},不含视频/帧/音频/路径/环境信息)。报告登记为免费版使用前提:启动一次性告知后自动执行;旁路非阻塞、网络不可用/接口异常时报告照常交付,仅提示可稍后重试。详见「📤 免费版报告登记说明」与工作流第 8 步。scripts/analyze_local_video.py —— 本地素材提取与 manifest 输出。scripts/verify_report_structure.py —— 报告本地结构硬门禁(不达标退出码 12,阻塞「宣布完成」,见工作流第 7 步)。scripts/archive_report.py —— 报告提交服务端(旁路非阻塞:把报告 Markdown 正文发往零一数科提交端点做登记,启动告知后自动执行;失败不阻塞报告交付,见工作流第 8 步)。我已将「视频号爆款短视频拆解(免费版:需本地上传视频)【零一数科·出品】」整理成可直接安装的 prompt。点击下方按钮复制,然后粘贴给你的 AI 助手即可加载使用。